// stores/todoStore.ts
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'

const useTodoStore = defineStore('todo', () => {
  // 定义状态：存储ToDo数据的数组
  const todos = ref<ToDoApiTypes[]>([])

  // 添加单个ToDo数据
  const addTodo = (todo: ToDoApiTypes) => {
    todos.value.push(todo)
  }

  // 更新ToDo数据
  const updateTodo = (updatedTodo: ToDoApiTypes) => {
    const index = todos.value.findIndex(t => t.id === updatedTodo.id)
    if (index !== -1) {
      todos.value[index] = updatedTodo
    }
  }

  // 删除ToDo数据
  const deleteTodo = (id: number) => {
    todos.value = todos.value.filter(todo => todo.id !== id)
  }

  // 获取单个ToDo数据
  const getTodoById = (id: number) => {
    return todos.value.find(todo => todo.id === id)
  }

  // 获取未完成的ToDo列表
  const getUnfinishedTodos = computed(() => {
    return todos.value.filter(todo => todo.finish === 0)
  })

  // 获取进行中的ToDo列表
  const getInProgressTodos = computed(() => {
    return todos.value.filter(todo => todo.finish === 1)
  })

  // 批量设置ToDo数据
  const setTodos = (todoList: ToDoApiTypes[]) => {
    todos.value = todoList
  }

  return {
    todos,
    addTodo,
    updateTodo,
    deleteTodo,
    getTodoById,
    getUnfinishedTodos,
    getInProgressTodos,
    setTodos
  }
})

export default  useTodoStore
